Модули в MobileCMS состоят из 4х основных частей:
name = "test" title = "Тест" admin_link = "test/admin" description = "Тестовый модуль" author = "Ant0ha" version = "0.1"
<?php
/**
* Контроллеры модулей происходят от класса Controller.
* Название контроллера происходит от названия модуля с большой буквы с окончанием _Controller
*/
class Test_Controller extends Controller {
/**
* Доступ к контроллеру (укажем 0 чтобы разрешить доступ каждому пользователю)
*/
public $access_level = 0;
/**
* Метод вызываемый по умолчанию
*/
public function action_index() {
# Вызовем главный и единственный метод нашего контроллера
$this->action_hello_world();
}
/**
* Метод выводит "Hello world!"
*/
public function action_hello_world() {
# Ассигнуем переменную для теста модуля
$this->tpl->assign(array(
'hello' => "Hello world!"
));
# Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views
# Будет подключен файл modules/test/views/default/hello_world.tpl
$this->tpl->display('hello_world');
}
}
?>
<?php
class Test_Admin_Controller extends Controller {
/**
* В доступе к контроллеру пропишем 10, т.е. он доступен только админам сайта.
* Чтобы разрешить доступ и модерам, можно будет прописать 8.
*/
public $access_level = 10;
/**
* Тема, используемая в контроллере, для админки необходимо указать "admin"
*/
public $template_theme = 'admin';
/**
* Метод вызываемый по умолчанию
*/
public function action_index() {
# Вызовем главный и единственный метод нашего контроллера
$this->action_hello_admin();
}
/**
* Метод выводит "Hello Admin!"
*/
public function action_hello_admin() {
# Ассигнуем переменную для теста модуля
$this->tpl->assign(array(
'hello' => "Hello Admin!"
));
# Подключаем шаблон нашего метода, шаблон приведен ниже, в описании views
# Будет подключен файл modules/test/views/admin/hello_admin.tpl
$this->tpl->display('hello_admin');
}
}
?>
<?php
/**
* Название класса инсталлятора также состоит из названия модуля и окончания _installer
*/
class test_installer {
/**
* Метод для установки модуля
*/
public static function install(&$db) {
# Создадим таблицу a_test, якобы нужную нашему модулю test
$db->query("CREATE TABLE`a_test` (
`item_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`item` VARCHAR( 30 ) NOT NULL
) ENGINE = MYISAM ;
");
}
/**
* Метод для удаления модуля
*/
public static function uninstall(&$db) {
$db->query("DROP TABLE a_test");
}
}
>
В инсталляторе можно не только создавать/удалять таблицы, но так же и создавать/удалять файлы и папки, добавлять правила роутинга, события и т.д.
<?php
/**
* Название класса виджета также состоит из названия модуля и окончания _widget
*/
class test_widget {
/**
* Показ виджета
*/
public static function display($widget_id) {
return 'Это виджет тестового модуля<br />';
}
/**
* Настройка виджета
*/
public static function setup($widget) {
a_notice('Данный виджет не требует настройки', a_url('index_page/admin'));
}
}
>